//
//  ViewController.m
//  04-UIControl
//
//  Created by dllo on 16/7/19.
//  Copyright © 2016年 DM.C. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong) UISegmentedControl *segMent;
@end

@implementation ViewController

- (void)viewDidLoad {
//    self.view.backgroundColor = [UIColor blackColor];
    [super viewDidLoad];
    [self createSwitch];
    [self createSlider];
    [self createSegMent];
    [self createPageControl];
}
#pragma mark - 创建Switch
// Switch 宽和高不影响控件的大小, 只有x和y.
- (void)createSwitch {
    UISwitch *swi = [[UISwitch alloc] initWithFrame:CGRectMake(180, 400, 20, 20)];
    [self.view addSubview:swi];
    // 开关开启后的背景颜色
    swi.onTintColor = [UIColor orangeColor];
    // 开关关闭状态下的边框颜色及开关切换时的颜色(null_resettable)
    swi.tintColor = nil;
    // 开关的按钮颜色
    swi.thumbTintColor = [UIColor cyanColor];
    // 开关开启/关闭时的图片(iOS7之后失效)
    swi.onImage = [UIImage imageNamed:@"4"];
    swi.offImage = [UIImage imageNamed:@"4"];
    // 这个属性用来判断switchControl的开闭状态(YES为开启, NO为关闭)
    // 可以通过setter方法, 改变UISwitch的初始状态
    NSLog(@"%@", swi.isOn ? @"YES" : @"NO");
    // 设置开关的初始状态, 如果setOn:后接YES, 则初始状态为开启, 反之也是.
    [swi setOn:NO animated:YES];
    // 添加绑定事件(与button相同)
    [swi addTarget:self action:@selector(switchAction:) forControlEvents:UIControlEventValueChanged];
}
// switch触发的事件
- (void)switchAction:(UISwitch *)swi {
    if (swi.on == YES) {
        [_segMent insertSegmentWithTitle:@"添加了" atIndex:_segMent.numberOfSegments animated:YES];
    } else {
        NSLog(@"关");
    }
}
#pragma mark - 创建slider
// slider的高度不影响控件的高度, 这个控件用于居中于视图中间
- (void)createSlider {
    UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(20, 500, 374, 20)];
    [self.view addSubview:slider];
    // 1.代表当前的slider的值的大小
    slider.value = 0.5;
    // 2.slider的最小值
    slider.minimumValue = 0.0;
    // 3.slider的最大值
    slider.maximumValue = 1.0;
    // 以上最大和最小可以根据情况调节
    // 4.添加(最小值的那边)左边的图片
    slider.minimumValueImage = [UIImage imageNamed:@"Unknown-2.png"];
    // 5.添加(最大值的那边)右边的图片
    slider.maximumValueImage = [UIImage imageNamed:@"Unknown-5.png"];
    // 6.当为YES时, 滑块在滑动过程中每时每刻都在输出Value的值, 当为NO时, 滑块在滑动过程中不输出value的值, 只有松手的时候才输出value值
    slider.continuous  = NO;
    // 7.绑定事件
    [slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
//    // 8.设置未划过的区域的颜色
    slider.maximumTrackTintColor = [UIColor lightGrayColor];
//    // 9.设置已划过的区域的颜色
    slider.minimumTrackTintColor = [UIColor redColor];
//    // 10.设置滑块按钮的颜色
    slider.thumbTintColor = [UIColor cyanColor];
    // 11.设置进度条滑块右边的图片
    [slider setMaximumTrackImage:[UIImage imageNamed:@"player_slider_playback_right.png"] forState:UIControlStateNormal];
    // 12.设置进度条滑块左边的图片
     [slider setMinimumTrackImage:[UIImage imageNamed:@"player_slider_playback_left.png"] forState:UIControlStateNormal];
    // 13.设置进度条滑块的图片
    [slider setThumbImage:[UIImage imageNamed:@"player_slider_playback_thumb.png"] forState:UIControlStateNormal];
    // 14. 打印图片
    NSLog(@"%@", slider.currentThumbImage);
    NSLog(@"%@", slider.currentMaximumTrackImage);
    NSLog(@"%@", slider.currentMinimumTrackImage);
   }
// 实现slider的点击事件
- (void)sliderAction:(UISlider *)slider {
    NSLog(@"%0.2f", slider.value);
}
#pragma mark - 创建segMent
- (void)createSegMent {
    self.segMent = [[UISegmentedControl alloc] initWithItems:@[@"first", @"second", @"last45545646546465654"]];
    // segment不给frame, 系统会自动计算大小
    NSLog(@"segment的frame大小 = %@", NSStringFromCGRect(_segMent.frame));
    _segMent.frame = CGRectMake(20, 50, 374, 40);
    [self.view addSubview:_segMent];
    // 1.设置segMent的点击效果, 默认是NO, 当为YES时, 点击效果为变换背景色闪烁一下然后恢复原样, 为NO时, 只是变换背景色, 不闪烁.
    _segMent.momentary = NO;
    // 2.分段控制器的items的个数
    NSInteger number = _segMent.numberOfSegments;
    NSLog(@"分段控制器的items的个数 = %ld", number);
    // 练习: 创建一个button(实现点击button, 在segMent里移除一个标题)
    UIButton *addTitleButton = [UIButton buttonWithType:UIButtonTypeSystem];
    addTitleButton.frame = CGRectMake(100, 150, 100, 50);
    [addTitleButton setTitle:@"删除一个标题" forState:UIControlStateNormal];
    [self.view addSubview:addTitleButton];
    addTitleButton.backgroundColor = [UIColor cyanColor];
    [addTitleButton addTarget:self action:@selector(addButton:) forControlEvents:UIControlEventTouchUpInside];
    // 3.insertSegmentWithTitle:atIndex:animated
    // 4.remove
    // 5.setTitle:forSegmentAtIndex: 修改标题
    //[_segMent setTitle:@"lala" forSegmentAtIndex:(_segMent.numberOfSegments - 1)];
    // 6.给某个下标下的标题重新设置宽度
    [_segMent setWidth:0 forSegmentAtIndex:0];
    // 7.设置对应下标内容的偏移
    [_segMent setContentOffset:CGSizeMake(0, 0) forSegmentAtIndex:0];
    // 8.segMent对应下标是否能选中(YES能, NO不能)
    [_segMent setEnabled:YES forSegmentAtIndex:0];
    // 9.给segMent的边框和选中后的背景颜色, 字体颜色赋予一个颜色
    _segMent.tintColor = [UIColor orangeColor];
    // 10.selectedSegmentIndex 选中的下标
    _segMent.selectedSegmentIndex = 1;
    // 11.apportionsSegmentWidthsByContent默认是为NO的
    // 如果分段控制器的段宽为0时, 并且该属性为YES, 系统会自动计算内容的宽度, 并调整segment每一个item的宽度
    _segMent.apportionsSegmentWidthsByContent = YES;
    // 给segMent添加点击事件
    [_segMent addTarget:self action:@selector(segMentAction:) forControlEvents:UIControlEventValueChanged];
}
// 实现segMen的点击方法
- (void)segMentAction:(UISegmentedControl *)segMent {
    switch (segMent.numberOfSegments) {
        case 1:
            NSLog(@"第一个");
            break;
        case 2:
            NSLog(@"第二个");
            break;
        case 3:
            NSLog(@"第三个");
            break;
        default:
            break;
    }
}
// 实现button的点击方法
- (void)addButton:(UIButton *)button {
    [_segMent removeSegmentAtIndex:(_segMent.numberOfSegments - 1) animated:YES];
}
#pragma mark - pageControl
- (void)createPageControl {
    UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(50, 250, 300, 50)];
    [self.view addSubview:pageControl];
    // 分页控制器的页数(默认为0)
    pageControl.numberOfPages = 10;
    // 分页控制器的当前页(默认为0)
    pageControl.currentPage = 0;
    // 设置分页控制器点的颜色
    pageControl.pageIndicatorTintColor = [UIColor greenColor];
    // 当分页控制器只有一页的时候(YES, 隐藏分页控制器)默认是NO(不隐藏)
    pageControl.hidesForSinglePage = YES;
    // 关闭系统事件page的切换显示效果(YES的时候), 直到调用updateCurrentPageDisplay这个方法, 才会显示
    pageControl.defersCurrentPageDisplay = YES;
    // 获取点的大小
    CGSize size = [pageControl sizeForNumberOfPages:0];
    NSLog(@"%@", NSStringFromCGSize(size));
    // 当前页的点的颜色
    pageControl.currentPageIndicatorTintColor = [UIColor redColor];
    // pageControl的点击事件
    [pageControl addTarget:self action:@selector(pageControlChange:) forControlEvents:UIControlEventValueChanged];
}
// 实现pageControl的点击事件
- (void)pageControlChange:(UIPageControl *)pageControl {
    NSLog(@"点了");
    [pageControl updateCurrentPageDisplay];
    
    [pageControl updateFocusIfNeeded];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end
